package org.example.managere.service.feibiao;

import org.example.managere.dto.feibiao.AmArchivesBaseDto;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Optional;

/**
 * 电机基本信息服务接口
 */
public interface AmArchivesBaseService {
    
    /**
     * 保存电机基本信息
     * @param amArchivesBaseDto 电机基本信息DTO
     * @return 保存后的电机基本信息DTO
     */
    AmArchivesBaseDto save(AmArchivesBaseDto amArchivesBaseDto);
    
    /**
     * 根据ID查找电机基本信息
     * @param motorId 电机ID
     * @return 可能包含电机基本信息的Optional
     */
    Optional<AmArchivesBaseDto> findById(String motorId);
    
    /**
     * 更新电机基本信息
     * @param amArchivesBaseDto 电机基本信息DTO
     * @return 更新后的电机基本信息DTO
     */
    AmArchivesBaseDto update(AmArchivesBaseDto amArchivesBaseDto);
    
    /**
     * 删除电机基本信息
     * @param motorId 电机ID
     */
    void deleteById(String motorId);
    
    /**
     * 查找所有电机基本信息
     * @return 电机基本信息DTO列表
     */
    List<AmArchivesBaseDto> findAll();
    
    /**
     * 分页查询电机基本信息
     * @param pageable 分页参数
     * @return 电机基本信息DTO分页结果
     */
    Page<AmArchivesBaseDto> findAll(Pageable pageable);
    
    /**
     * 根据关键字搜索电机基本信息
     * @param keyword 关键字
     * @return 电机基本信息DTO列表
     */
    List<AmArchivesBaseDto> searchByKeyword(String keyword);
    
    /**
     * 根据关键字搜索电机基本信息（分页）
     * @param keyword 关键字
     * @param pageable 分页参数
     * @return 电机基本信息DTO分页结果
     */
    Page<AmArchivesBaseDto> searchByKeywordPaged(String keyword, Pageable pageable);
    
    /**
     * 根据电机型号查询电机基本信息
     * @param motorType 电机型号
     * @return 电机基本信息DTO列表
     */
    List<AmArchivesBaseDto> findByMotorType(String motorType);
    
    /**
     * 根据制造商查询电机基本信息
     * @param manufacturer 制造商
     * @return 电机基本信息DTO列表
     */
    List<AmArchivesBaseDto> findByManufacturer(String manufacturer);
} 